#include<bits/stdc++.h>
#define lowbit(x) ((x)&-(x))
using namespace std;
const long long inf = 0x3f3f3f3f3f3f3f3f;
int n,m,k;
pair<int,int> a[100003],b[100003];
pair<int,int> t[100003];
struct{
	long long w[1003][1003],f[1003];
	void Solve()
	{
		memset(w,0x3f,sizeof(w));
		// cerr << n << "\n";
		for(int i = 0;i < m;i++)
		{
			for(int l = 1;l <= n;l++)
			{
				long long x = max(a[l].first - b[i].first,0);
				int r = l;
				while(r <= n && a[r].second <= b[i].second)
					w[l][r] = min(w[l][r],x),r++;
				x -= b[i].second;
				while(r <= n)
					w[l][r] = min(w[l][r],x + a[r].second),r++;
			}
		}
		memset(f,0x3f,sizeof(f));
		f[n + 1] = 0;
		for(int l = n;l;l--)
			for(int r = l;r <= n;r++)
				f[l] = min(f[l],f[r + 1] + w[l][r]);
		cout << f[1] << "\n";
	}
}Sub2;
long long f[13][1<<10|3];
int cnt[1<<10|3];
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	freopen("move.in","r",stdin);
	freopen("move.out","w",stdout);
	cin >> n >> m >> k;
	for(int i = 1;i <= n;i++)
		cin >> t[i].first >> t[i].second;
	int id = 0;
	sort(t + 1,t + n + 1);
	for(int i = n,U = -1;i;i--)
	{
		if(t[i].second <= U)
			continue;
		a[++id] = t[i],U = t[i].second;
	}
	n = id;
	for(int i = 0;i < m;i++)
		cin >> b[i].first >> b[i].second;
	if(k == 1)
	{
		Sub2.Solve();
		return 0;
	}
	memset(f,0x3f,sizeof(f));
	f[0][0] = 0;
	for(int S = 1;S < (1 << m);S++)
		cnt[S] = cnt[S ^ lowbit(S)] + 1;
	a[0].first = 2e9;
	for(int i = 0;i < n;i++)
	{
		for(int S = 0;S < (1 << m);S++) if(f[i][S] != inf)
		{
			for(int j = 0;j < m;j++)
			{
				t[j] = b[j];
				if(S & (1 << j))
					t[j].first = a[i].first,t[j].second = max(t[j].second,a[i].second);
			}
			for(int T = 0;T < (1 << m);T++) if(cnt[T] >= k)
			{
				long long res = f[i][S];
				for(int j = 0;j < m;j++) if(T & (1 << j))
					res += max(a[i + 1].first - t[j].first,0) + max(a[i + 1].second - t[j].second,0);
				f[i + 1][T] = min(f[i + 1][T],res);
			}
		}
	}
	long long ans = inf;
	for(int S = 0;S < (1 << m);S++)
		ans = min(ans,f[n][S]);
	cout << ans << "\n";
	return 0;
}